package setting

type SrvConfig struct {
	Name string `mapstructure:"name" json:"name"`
}

type CorsConfig struct {
	AllowOrigins []string `mapstructure:"allow_origins" json:"allow_origins"`
}

type ConsulConfig struct {
	Host string   `mapstructure:"host" json:"host"`
	Port int      `mapstructure:"port" json:"port"`
	Tags []string `mapstructure:"tags" json:"tags"`
}

type JWTConfig struct {
	SigningKey string `mapstructure:"signing_key" json:"signing_key"`
	Issuer     string `mapstructure:"issuer" json:"issuer"`
	Expire     int    `mapstructure:"expire" json:"expire"`
}

type ServerConfig struct {
	Name               string `mapstructure:"name" json:"name"`
	Port               int    `mapstructure:"port" json:"port"`
	*CorsConfig        `mapstructure:"cors" json:"cors"`
	*JWTConfig         `mapstructure:"jwt" json:"jwt"`
	*ConsulConfig      `mapstructure:"consul" json:"consul"`
	*AlipayConfig      `mapstructure:"alipay_config" json:"alipay_config"`
	OrderSrvConfig     SrvConfig `mapstructure:"order_srv" json:"order_srv"`
	GoodsSrvConfig     SrvConfig `mapstructure:"goods_srv" json:"goods_srv"`
	InventorySrvConfig SrvConfig `mapstructure:"inventory_srv" json:"inventory_srv"`
}

type AlipayConfig struct {
	AppID           string `mapstructure:"app_id" json:"app_id"`
	IsProduction    bool   `mapstructure:"is_production" json:"is_production"`
	NotifyURL       string `mapstructure:"notify_url" json:"notify_url"`
	ReturnURL       string `mapstructure:"return_url" json:"return_url"`
	ProductCode     string `mapstructure:"product_code" json:"product_code"`
	AlipayPublicKey string `mapstructure:"alipay_public_key" json:"alipay_public_key"`
	AppPrivateKey   string `mapstructure:"app_private_key" json:"app_private_key"`
}

type NacosCliConfig struct {
	NamespaceId string `mapstructure:"namespace_id" json:"namespace_id"`
	LogDir      string `mapstructure:"log_dir" json:"log_dir"`
	CacheDir    string `mapstructure:"cache_dir" json:"cache_dir"`
	LogLevel    string `mapstructure:"log_level" json:"log_level"`
	Goods       string `mapstructure:"order" json:"order"`
	Password    string `mapstructure:"password" json:"password"`
	DataId      string `mapstructure:"data_id" json:"data_id"`
	Group       string `mapstructure:"group" json:"group"`
}

type NacosSerConfig struct {
	IpAddr string `mapstructure:"ip_addr" json:"ip_addr"`
	Port   uint64 `mapstructure:"port" json:"port"`
}

type NacosConfig struct {
	*NacosCliConfig `mapstructure:"nacos_cli" json:"nacos_cli"`
	*NacosSerConfig `mapstructure:"nacos_ser" json:"nacos_ser"`
}
